//
// AsioDeviceAdapter.hpp for AsioDeviceAdapter in /home/mambou_j//babel-2014
// 
// Made by jacquesquentin mamboumouafo
// Login   <mambou_j@epitech.net>
// 
// Started on  Thu May 10 23:27:43 2012 jacquesquentin mamboumouafo
// Last update Wed May 16 16:52:41 2012 jacquesquentin mamboumouafo
//


#ifndef	__ASIODEVICEADAPTER_HPP__
#define	__ASIODEVICEADAPTER_HPP__


namespace	portaudio
{

  // Forward declaration(s):
  class	Device;

  //Declaration(s):
  ///////
  /// @brief Adapts the given Device to ASIO specific extension.
  ///
  /// Deleting the AsioDeviceAdapter does not affect the underlaying
  /// Device.
  //////
	class	AsioDeviceAdapter
	{
	public:
	  AsioDeviceAdapter(Device &device);

	    Device	&device();

	    long	minBufferSize() const;
	    long	maxBufferSize() const;
	    long	preferredBufferSize() const;
	    long	granularity() const;

	    void	showControlPanel(void *systemSpecific);

	    const	char	*inputChannelName(int channelIndex) const;
	  const	char	*outputChannelName(int channelIndex) const;

	private:
	  Device	*device_;
	  long	minBufferSize_;
	  long	maxBufferSize_;
	  long	preferredBufferSize_;
	  long	granularity_;
	};
}

#endif
